//
// Created by ClouD on 22.11.16.
//

#ifndef C_DATA_STRUCTURE_DJ_SET_H
#define C_DATA_STRUCTURE_DJ_SET_H

#include <vector>

class DisjointSet {
private:
    std::vector<int> parent;
    std::vector<int> rank; // 秩

public:
    DisjointSet(int max_size);

    int find(int x);

    void to_union(int x1, int x2);

    // 判断两个元素是否属于同一个集合
    bool is_same(int e1, int e2);
};

#endif //C_DATA_STRUCTURE_DJ_SET_H
